chore(FR-2892): bump @cloudscape-design/board-components 3.0.60 -> 3.0.176 and regenerate local patch#7410
Conversation
How to use the Graphite Merge QueueAdd either label to this PR to merge it via the merge queue:
You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has required the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. This stack of pull requests is managed by Graphite. Learn more about stacking. |
Coverage Report for react-coverage (./react)
File Coverage
|
||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment.
Pull request overview
Bumps @cloudscape-design/board-components from 3.0.60 to 3.0.176 (the latest version satisfying the 7-day minimumReleaseAge quarantine), regenerates the local patch against the new sources, and reconciles the lockfile. The patch is still required because upstream does not expose className on BoardProps/BoardItemProps and the CSS-module class hashes are unstable across releases — both are needed by BAIBoard.tsx styling and Playwright E2E selectors.
Changes:
- Upgrade
@cloudscape-design/board-components3.0.60 → 3.0.176 inreact/package.json,pnpm-workspace.yaml, andpnpm-lock.yaml. - Replace
react/patches/@cloudscape-design__board-components@3.0.60.patchwith a regenerated…@3.0.176.patch(cleaner:String → string, usesclsx(...)instead of hand-rolled string concat, drops Prettier noise). - Incidental lockfile churn:
vite 6.4.1 → 6.4.2in a@vitest/browsersnapshot,eslint-plugin-importre-resolves between two existing@typescript-eslint/parservariants, and@cloudscape-design/design-tokens@3.0.51is dropped (no longer a peer dep; verified no direct imports).
Reviewed changes
Copilot reviewed 4 out of 5 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
react/package.json |
Bumps @cloudscape-design/board-components to 3.0.176. |
pnpm-workspace.yaml |
Updates patchedDependencies key + path to the new patch file. |
pnpm-lock.yaml |
Reflects the version bump, new patch hash, dropped design-tokens peer, and incidental resolver swaps. |
react/patches/@cloudscape-design__board-components@3.0.60.patch |
Removed (superseded). |
react/patches/@cloudscape-design__board-components@3.0.176.patch |
New regenerated patch: adds className?: string to BoardProps/BoardItemProps, threads className via clsx, and appends stable bai_board_* / bai_grid_item selectors used by BAIBoard.tsx and the E2E suite. |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
8a6206c to
8796061
Compare
8796061 to
557f41e
Compare
Merge activity
|
…0.176 and regenerate local patch (#7410) Resolves #7408([FR-2892](https://lablup.atlassian.net/browse/FR-2892)) ## Summary Bumps `@cloudscape-design/board-components` from **3.0.60** to **3.0.176** and regenerates the local patch against the new sources. Also adds `@cloudscape-design/components` (`^3.0.1280`) as a direct dependency, because 3.0.176 introduced a runtime import that the bare peer-dep declaration no longer satisfies in this repo. 3.0.176 is the latest version that satisfies the repo's 7-day `minimumReleaseAge` quarantine in `pnpm-workspace.yaml` (3.0.178 is newer but still inside the quarantine window). ## Patch decision: kept + regenerated The local patch is **kept** because upstream 3.0.176 still does not: - Expose `className` on `BoardProps` / `BoardItemProps` (used by `BAIBoard.tsx` to style the board wrapper and items). - Provide stable class-name selectors — the CSS-module class hashes rotate on every minor bump. We append stable `bai_board_*` / `bai_grid_item` suffixes so that `BAIBoard.tsx` styling and the E2E suite (`e2e/start/start-page.spec.ts`, `e2e/dashboard/dashboard.spec.ts`, `e2e/utils/classes/common/StartPage.ts`) can locate elements deterministically. The regenerated patch is also cleaner than the 3.0.60 version: fixes a `String → string` type bug, uses the upstream `clsx(...)` pattern instead of hand-rolled string concat, and drops Prettier-formatted noise that bloated the prior diff (264 lines → 196 lines). ## New direct dependency: `@cloudscape-design/components` board-components PR [#362](cloudscape-design/board-components#362) ("UAP directional controls and tooltips", merged 2025-06-24) made the drag/resize handles delegate to `InternalDragHandle` from `@cloudscape-design/components/internal/do-not-use/drag-handle`. Every version from that change onward (3.0.149+) carries the same import. In 3.0.60 we got away with `@cloudscape-design/components` being a bare peer dep — nothing pulled it in at runtime, so pnpm never installed it. With 3.0.176 the import is real, and `pnpm dev` fails at vite pre-bundle with `Missing "./internal/do-not-use/drag-handle" specifier in "@cloudscape-design/components" package`. `scripts/verify.sh` does not catch this (TypeScript doesn't verify external-module subpath existence). Mitigations: - Pinned to `^3.0.1280` — the same minimum-release-age quarantine applies, so pnpm resolves to a stable, ≥7-day-old version. - `@cloudscape-design/components` declares narrow `sideEffects` (CSS + base-component only), so Rollup tree-shaking should keep the production bundle close to "just the drag-handle module + its CSS". Install footprint (~37 MB / 5,558 files in `node_modules`) is the real cost, not bundle weight. ## Side effect: fewer Vite serving-allow-list warnings on dev The dev server used to print recurring warnings like: ``` The request url ".../@cloudscape-design/board-components/3.0.60/.../internal/screenreader-grid-navigation/styles.scoped.css" is outside of Vite serving allow list. ``` caused by absolute paths baked into the published 3.0.60 source maps. 3.0.176 refactored the board internals and removed the `ScreenReaderGridNavigation` module entirely, so the offending sourcemap reference is gone and the warning no longer fires. ## Incidental lockfile changes `pnpm install` reconciled a few unrelated rows: - `vite@6.4.1 → 6.4.2` in the `@vitest/browser` snapshot. - `eslint-plugin-import` re-resolved `@typescript-eslint/parser` between two existing variants — no new packages added. - `@cloudscape-design/design-tokens@3.0.51` removed from the snapshot (upstream dropped it as a peer dep). Verified no direct imports of `@cloudscape-design/design-tokens` exist in `react/src` or `packages/backend.ai-ui/src`, so no action needed. ## Follow-up Filing a Jira follow-up to migrate `BAIBoard` styling and E2E selectors away from injected `bai_*` class hooks (use `data-testid` instead). That would reduce future bumps to "just the `className` interface delta" or eliminate the patch entirely if upstream accepts a `className` upstream-PR. ## Test plan - [x] `pnpm install --frozen-lockfile` applies cleanly. - [x] `pnpm dev` boots: `vite` pre-bundle succeeds, `tsc --watch` reports 0 errors, board page reachable at `https://fr-2892.localhost:1356`. - [ ] Open `/start` (and `/dashboard`): drag a board card across slots, resize a card width, reload — layout persists. - [ ] `pnpm exec playwright test e2e/start/start-page.spec.ts e2e/dashboard/dashboard.spec.ts` passes against a real cluster. [FR-2892]: https://lablup.atlassian.net/browse/FR-2892?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
557f41e to
98d5479
Compare

Resolves #7408(FR-2892)
Summary
Bumps
@cloudscape-design/board-componentsfrom 3.0.60 to 3.0.176 and regenerates the local patch against the new sources. Also adds@cloudscape-design/components(^3.0.1280) as a direct dependency, because 3.0.176 introduced a runtime import that the bare peer-dep declaration no longer satisfies in this repo.3.0.176 is the latest version that satisfies the repo's 7-day
minimumReleaseAgequarantine inpnpm-workspace.yaml(3.0.178 is newer but still inside the quarantine window).Patch decision: kept + regenerated
The local patch is kept because upstream 3.0.176 still does not:
classNameonBoardProps/BoardItemProps(used byBAIBoard.tsxto style the board wrapper and items).bai_board_*/bai_grid_itemsuffixes so thatBAIBoard.tsxstyling and the E2E suite (e2e/start/start-page.spec.ts,e2e/dashboard/dashboard.spec.ts,e2e/utils/classes/common/StartPage.ts) can locate elements deterministically.The regenerated patch is also cleaner than the 3.0.60 version: fixes a
String → stringtype bug, uses the upstreamclsx(...)pattern instead of hand-rolled string concat, and drops Prettier-formatted noise that bloated the prior diff (264 lines → 196 lines).New direct dependency:
@cloudscape-design/componentsboard-components PR #362 ("UAP directional controls and tooltips", merged 2025-06-24) made the drag/resize handles delegate to
InternalDragHandlefrom@cloudscape-design/components/internal/do-not-use/drag-handle. Every version from that change onward (3.0.149+) carries the same import.In 3.0.60 we got away with
@cloudscape-design/componentsbeing a bare peer dep — nothing pulled it in at runtime, so pnpm never installed it. With 3.0.176 the import is real, andpnpm devfails at vite pre-bundle withMissing "./internal/do-not-use/drag-handle" specifier in "@cloudscape-design/components" package.scripts/verify.shdoes not catch this (TypeScript doesn't verify external-module subpath existence).Mitigations:
^3.0.1280— the same minimum-release-age quarantine applies, so pnpm resolves to a stable, ≥7-day-old version.@cloudscape-design/componentsdeclares narrowsideEffects(CSS + base-component only), so Rollup tree-shaking should keep the production bundle close to "just the drag-handle module + its CSS". Install footprint (~37 MB / 5,558 files innode_modules) is the real cost, not bundle weight.Side effect: fewer Vite serving-allow-list warnings on dev
The dev server used to print recurring warnings like:
caused by absolute paths baked into the published 3.0.60 source maps. 3.0.176 refactored the board internals and removed the
ScreenReaderGridNavigationmodule entirely, so the offending sourcemap reference is gone and the warning no longer fires.Incidental lockfile changes
pnpm installreconciled a few unrelated rows:vite@6.4.1 → 6.4.2in the@vitest/browsersnapshot.eslint-plugin-importre-resolved@typescript-eslint/parserbetween two existing variants — no new packages added.@cloudscape-design/design-tokens@3.0.51removed from the snapshot (upstream dropped it as a peer dep). Verified no direct imports of@cloudscape-design/design-tokensexist inreact/srcorpackages/backend.ai-ui/src, so no action needed.Follow-up
Filing a Jira follow-up to migrate
BAIBoardstyling and E2E selectors away from injectedbai_*class hooks (usedata-testidinstead). That would reduce future bumps to "just theclassNameinterface delta" or eliminate the patch entirely if upstream accepts aclassNameupstream-PR.Test plan
pnpm install --frozen-lockfileapplies cleanly.pnpm devboots:vitepre-bundle succeeds,tsc --watchreports 0 errors, board page reachable athttps://fr-2892.localhost:1356./start(and/dashboard): drag a board card across slots, resize a card width, reload — layout persists.pnpm exec playwright test e2e/start/start-page.spec.ts e2e/dashboard/dashboard.spec.tspasses against a real cluster.